/**
 * This class is the view model for the Main view of the application.
 */
Ext.define('app.view.main.MainModel', {
    extend: 'Ext.app.ViewModel',

    alias: 'viewmodel.main',

    /**
     * 构造函数中从后台请求数据
     */
    constructor: function() {
    	Ext.log('MainModel constructor');
    	
    	var me = this;
    	
    	// 这一句是关键，如果没有的话，this还没有初始化完成,下面的Ext.apply(me.data,....)这句就会出错 
    	this.callParent(arguments);
    	
    	// 同步调用取得系统参数
    	Ext.Ajax.request({
    		url: 'rest/app/applicationinfo',
    		async: false, //同步
    		success: function(response) {
				var text = response.responseText;
				var applicationInfo = Ext.decode(text, true);
				
				// 把从后台传过来的参数加入到data中去  
                Ext.apply(me.data, applicationInfo); 
    		}
    	});
    }, 
    
    data: {
    	
    	monetary : { // 金额单位
			value : 'tenthousand' // 默认万元，以后可以从后台取得个人偏好设置，或者存放在cookies中
		},

		monetaryposition : { // 金额单位放置位置
			value : 'behindnumber'
		},

		autocolumnmode : { // 列宽自动调整
			value : 'onlyfirstload' // 列宽自动调整,默认第一次加载到数据
		},
		
		autoselectrecord: {
			value: 'disable'
		},
				
        name: 'app'
    },
    
    getModuleDefine : function(moduleId) {
		var result = null;
		Ext.Array.each(this.get('tf_Modules'), function(module) {
			if (module.tf_moduleId == moduleId + '') {
				result = module;
				return false;
			}
		})
		return result;
	},
			
	//根据data.systemMenu生成菜单条和菜单按钮下面使用的菜单数据  
	getMenus : function() {  
	    var items = [], 
	    	me = this;
	    	
	    Ext.Array.each(this.get('tf_MenuGroups'), function(group) { // 遍历菜单项的数组  
            var submenu = [];  
            
            // 对每一个菜单项，遍历菜单条的数组  
            Ext.Array.each(group.items, function(menuitem) {  
            	
            	// 根据moduleId取得该模块的定义  
                var module = me.getModuleDefine(menuitem.tf_ModuleId);  
                
            	// 如果模块存在（或者具有浏览权限，以后加入）  
                if (module) {  
                    submenu.push({  
                        mainmenu : 'true',  
                        moduleName : module.tf_moduleName,  
                        text : module.tf_title,  
                        icon : module.tf_iconURL,  
                        glyph : module.tf_glyph,  
                        handler : 'onMainMenuClick' // MainController中的事件处理程序  
                    });  
                    // 如果菜单定义了分隔下一条，那么菜单上加一个分隔线  
                    if (menuitem.tf_addSeparator)  
                        submenu.push('-');  
                } 
            }); 
            items.push({  
                text : group.tf_title,  
                menu : submenu,  
                icon : group.tf_iconURL,  
                glyph : group.tf_glyph 
            });  
        });  
	    return items;  
	},
	
	formulas : {
		
		isButtonMenu : function(get) {
			
			return get('menuType.value') == 'button';
		},
		isToolbarMenu : function(get) {
			
			return get('menuType.value') == 'toolbar';
		},
		isTreeMenu : function(get) {
			
			return get('menuType.value') == 'tree';
		}
	}
});